package com.yt.order.models.service;

import com.baomidou.mybatisplus.service.IService;
import com.yt.order.models.bo.WorkOrderInfoSaveBO;
import com.yt.order.models.dto.WorkOrderInfoDTO;

import java.util.List;
import java.util.Map;

/**
 * 工单信息服务接口
 */
public interface IWorkOrderInfoService extends IService<WorkOrderInfoDTO> {

    /**
     * 添加工单信息
     * @param saveBO
     * @return
     */
    boolean add(WorkOrderInfoSaveBO saveBO);

    /**
     * 分配订单给接单员
     * @param id 订单ID
     * @param dispatcherId 调度员ID
     * @param employeeId 接单员ID
     * @return 是否分配成功
     */
    boolean assignOrder(Long id, Long dispatcherId, Long employeeId);
    
    /**
     * 根据客户ID获取工单列表
     * @param customerId 客户ID
     * @return 工单列表
     */
    List<WorkOrderInfoDTO> selectByCustomerId(Long customerId);
    
    /**
     * 根据员工ID获取其完成的订单数量
     * @param employeeId 员工ID
     * @return 订单数量
     */
    int countCompletedOrdersByEmployeeId(Long employeeId);
    
    /**
     * 根据员工ID获取其未完成的订单数量（状态为0待分配或1处理中的订单）
     * @param employeeId 员工ID
     * @return 未完成订单数量
     */
    int countUnfinishedOrdersByEmployeeId(Long employeeId);
    
    /**
     * 获取所有员工的未完成订单数量
     * @return 员工ID和未完成订单数量的映射
     */
    Map<Long, Integer> countAllEmployeesUnfinishedOrders();
}